import numpy as np
import pandas as pd
import time
import datetime

# 初始化数据
X = np.array([[1.2,1.5,1.8],[1.3,1.4,1.9],[1.1,1.6,1.7]])
y = np.array([5,10,9]).T

# 输出价格表
price = pd.DataFrame(X,columns = ['白菜','土豆','冬瓜'])
date = pd.DataFrame(['2019/7/28','2019/7/29','2019/7/30'],columns= ['日期'])
price = pd.concat([date,price],axis = 1)
price.index = price['日期']
price = price.drop('日期',axis=1)
# print(price)

# 输出采购数量表
nums = pd.DataFrame({'品名':['白菜','土豆','冬瓜'], '数量':y})
nums.index = nums['品名']
nums = nums.drop('品名',axis=1)
# print(nums)


def metric(fn):
    # 匿名函数
    def c_time(*args,**kwargs):
        # 使用time的time（）方法来获取当前时间
        start = datetime.datetime.now()
        # 执行被传入的测试方法
        fn()
        x = 1
        while x < 10000000:
            x = x + 1
        # 再次获取当前时间
        end = datetime.datetime.now()
        # 两次时间的差即方法运行所需的时间
        print('%s执行了%f 微秒'% (fn.__name__,(start-end).microseconds))
    return c_time

@metric
def days_sum():
    for i in range(3):
        Z = []
        # 设置保留的小数点
        Z.append('%.1f' %((X[i]*y).sum()))
        print(Z)

@metric
def total():
    print(np.dot(X,y))

@metric
# 被装饰函数
def run1():
    # 休眠 1 秒
    time.sleep(1)
    # 推导式
    l = [x**2 for x in range(1000)]
    return l

if __name__ == '__main__':
    total()
    days_sum()